package me.softwareengineer.guice.rendering.domain.search;

/**
 * Defines the axes of the search.
 * 
 * @author yadtahir
 * 
 */
public enum SearchAxes {

	/** Just the context element itself. */
	SELF,

	/** The parent of the context element, if there is one. */
	PARENT,

	/**
	 * The ancestors of the context element; the ancestors of the context
	 * element consist of the parent of context element and the parent's parent
	 * and so on; thus, the ancestor axis will always include the root element,
	 * unless the context block is the root element.
	 */
	ANCESTOR,

	/**
	 * The context element and the ancestors of the context element; thus, the
	 * ancestor axis will always include the root element.
	 */
	ANCESTOR_OR_SELF,

	/** The children of the context element. */
	CHILD,

	/**
	 * The descendants of the context element; a descendant is a child or a
	 * child of a child and so on.
	 */
	DESCENDANT,

	/** The context element and the descendants of the context block. */
	DESCENDANT_OR_SELF,

	/**
	 * All element in the same document as the context element that are after
	 * the context element in document order, excluding any descendants.
	 */
	FOLLOWING,

	/** All the following siblings of the context element. */
	FOLLOWING_SIBLING,

	/**
	 * All element in the same document as the element block that are before the
	 * context element in document order, excluding any ancestors.
	 */
	PRECEDING,

	/** All the preceding siblings of the context element. */
	PRECEDING_SIBLING
}
